package ar.edu.unq.mongodbexample.model;

import java.util.List;

import org.bson.types.ObjectId;

import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;

/**
 * Clase abstracta que define la modalidad de aprobacion de una materia
 * 
 * @author Nicolas Faure
 */
@Entity(value="Strategies",noClassnameStored=true)
public abstract class ApprovalStrategy {

	@Id
    private ObjectId name;
	
    public ApprovalStrategy() {

    }

    /**
     * Determina la nota final de una materia
     * 
     * @param student
     * @param marks
     */
    public abstract Double finalMark(final Student student, List<Double> marks);

}